package com.zrrd.learn.chapter06;
import java.util.Arrays;
import java.util.Scanner;
import java.util.Random;

/**
 * 数组题2
 *
 * @author asus
 * @version 1.0
 * @date 2023/7/13 10:39
 */
public class ArrayWork02 {
//    1.小明要去买一部手机，他询问了四家店的价格，分别是2800.5元，2900元，2750.0元和3100元 显示输出最低价
    public static void question01(double[] arr1){
        Arrays.sort(arr1);
        System.out.println("最低价是："+arr1[0]+"元");
    }
//    任意一个人输入年龄，就可以判断出他是哪个年龄段的人？ 0-9 垂髫之年；10-19 志学之年；20-29 弱冠之年；30-39 而立之年；
//    40-49 不惑之年；50-59 知命之年；60-69 花甲之年；70-79 古稀之年；80-89 杖朝之年；90-99 耄耋之年
    public static void question02(){
        System.out.println("请输入年龄");
        //获取用户输入的年龄
        Scanner s = new Scanner(System.in);
        int age = s.nextInt();
        //进行判断年龄段
        if(age <= 0 | age > 100){
            System.out.println("您输入的年龄有误");

        }else if(age <= 9){
            System.out.println("垂髫之年");

        }else if(age <= 19){
            System.out.println("志学之年");

        }else if(age <= 29){
            System.out.println("弱冠之年");

        }else if(age <= 39){
            System.out.println("而立之年");

        }else if(age <= 49){
            System.out.println("不惑之年");
        }
        else if(age <= 59){
            System.out.println("知命之年");
        }
        else if(age <= 69){
            System.out.println("花甲之年");
        }
        else if(age <= 79){
            System.out.println("古稀之年");
        }
        else if(age <= 89){
            System.out.println("杖朝之年");
        }
        else if(age <= 99){
            System.out.println("耄耋之年");
        }


    }
//   3. 把一个数组的元素逆序交换,int[] a = { 5, 11, 15, 24, 36, 47, 59, 66 };
//   交换元素后int[] b = { 66 ,59 ,47 ,36 ,24,15 ,11 ,5 };
    public static void question03(int[] arr2){
        System.out.println("交换前："+Arrays.toString(arr2));
        int index=0;
        for(int i = 0;i< arr2.length/2; i++){
            int temp = arr2[i];
            arr2[i]  = arr2[arr2.length-1-i];
            arr2[arr2.length-1-i] = temp ;
        }
        System.out.println("交换后："+Arrays.toString(arr2));
    }
//    4.随机产生10个元素（10——99范围），保存到数组中，查找里面是否有>80，如果有，显示有，否则提示没有
        public static void question04() {
            //随机生成10个10-99的整数
            int[] arr3 = new int[10];
            Random rand = new Random();
            int index = 0;
            for (int i = 0; i < arr3.length; i++) {
                arr3[i] = rand.nextInt(89) + 10;
                if (arr3[i] > 80) {
                    index++;
                }
            }
            if (index>0){
                System.out.println("有大于80的数");
            }
            else{
                System.out.println("没有大于80的数");

            }

            System.out.println(Arrays.toString(arr3));


            }
//    6.创建一个char类型的36个元素的数组，前26个元素放置’A’-‘Z‘,后10个元素放置’0’-'9‘。使用for循环访问所有元素并打印出来
    public static void question06(){
        char[] arr4= new char[36];
//        char类型数据运算 ‘A’+1 -> ‘B’，‘0’+1 -> ‘1’
        for (int i = 0; i < 26 ; i++) {
            arr4[i] = (char)('A'+i);
        }
        for (int i = 26; i <36; i++) {
            arr4[i] = (char) ('0'+i-26);
        }
        for (int i = 0; i < 36; i++) {
            System.out.print(arr4[i]+" ");
        }
    }
//    双色球判定原理：
//    用户选择号码为1到33的红球（不可以重复），再选择号码1-16的蓝球
//    中奖规则：
//        6个红球和1个蓝球则中1000w
//        6个红球和0个蓝球则中500w
//        5个红球和1个蓝球则中3000元
//        5个红球和0个蓝球或者4个红球和1个蓝球或者4个红球和0个蓝球则中200元
//        3个红球和1个蓝球或者2个红球和1个蓝球则中10元
//        1个红球和1个蓝球或者0个红球和1个蓝球则中5元
//    整个过程分为：


    public  static void question07() {
        //            1.创建随机号码
        /**
         * 定义数组大小
         */
        int[] arr5 = new int[6];
        int blue;
        Random rand = new Random();
        /**
         * 生成随机数
         */
        for (int i = 0; i < arr5.length; i++) {
            arr5[i] = rand.nextInt(32) + 1;
        }
        blue = rand.nextInt(15) + 1;

        System.out.println("红球中奖号码为" + Arrays.toString(arr5));
        System.out.println("蓝球中奖号码为" + blue);

        //            2.用户输入号码
        int[] UserIput = new int[7];
        int RedCount = 0;
        int BlueCount = 0;
        for (int i = 0; i < UserIput.length; ) {
            //用户输入红球号码
            if (i <= 6) {
                System.out.println("请输入第" + (i + 1) + "个红球的号码(1-33)");
                int n =  rand.nextInt();
                if ((n <= 33 && n >= 1) && contains(UserIput, n)) {
                    UserIput[i] = n;
                    if (!contains(arr5, n)) RedCount++;
                    i++;
                } else if (!contains(UserIput, n) && (n <= 33 && n >= 1)) {
                    System.out.println("输入有重复，请重新输入");
                } else if (contains(UserIput, n) && (n > 33 || n < 1)) {
                    System.out.println("输入数据范围错误请重新输入");
                }
            }
            if (i == UserIput.length - 1)
            //用户输入蓝球号码
            {
                System.out.println("请输入蓝球的号码(1-16)");
                int n = rand.nextInt();
                if (n >= 1 && n <= 16) {
                    UserIput[i] = n;
                    if (n == arr5[i]) BlueCount++;
                    i++;
                } else {
                    System.out.println("输入范围错误，请重新输入!!!");
                }
            }


            //             3.判定中奖情况
            if (RedCount == 6 && BlueCount == 1) {
                System.out.println("恭喜中奖1000万");
            } else if (RedCount == 6 && BlueCount == 0) {
                System.out.println("恭喜中奖500w");
            } else if (RedCount == 5 && BlueCount == 1) {
                System.out.println("恭喜中奖3000元");
            } else if ((RedCount == 5 && BlueCount == 0) || (RedCount == 4 && BlueCount == 1) || (RedCount == 4 && BlueCount == 0)) {
                System.out.println("恭喜中奖200元");
            } else if ((RedCount == 3 && BlueCount == 1) || (RedCount == 2 && BlueCount == 1)) {
                System.out.println("恭喜中奖10元");
            } else if ((RedCount == 1 && BlueCount == 1) || (RedCount == 0 && BlueCount == 1)) {
                System.out.println("恭喜中奖5元");
            } else {
                System.out.println("很遗憾，没有中奖");
            }
        }

    }
    //判断是否已经有这个数字
    public static boolean contains ( int[] arr5, int n){
        for (int i = 0; i < arr5.length; i++) {
            if (arr5[i] == n) {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {

        double[] arr={2800.5,2900,2750.0,3100};
        int[] a = { 5, 11, 15, 24, 36, 47, 59, 66 };

//        question01(arr);
//        question02();
//        question03(a);
//        question04();
          question07();
    }
}
